Applications for mobile computing devices (also referred to herein as “mobile devices”), e.g., “smart phones” or tablet computers, etc., can be developed through cycles of design and programming. Current methods of application development often involve multiple iterations of design, such as for the visual appearance of a graphical user interface, followed by multiple iterations of programming, such as for the code required to implement a graphical user interface. In some cases, the time and effort required to program a particular feature of an application may be wasted, if it is realized that the feature will not serve the intended purpose. For example, a navigation menu could be designed to have a very sophisticated response to user interaction. The programming of a such a navigation menu could require many hours of coding. If a developer realizes, after spending many hours on coding, that the navigation menu will not provide the needed response, or that it will not function similarly on different types of devices, the resources spent developing the menu are non-recoverable, and can increase production costs of the application.
In addition, current methods of application development provide inadequate ways to view changes made to an application during development. Although some changes can be previewed in a simulated operating environment (e.g., a simulated mobile screen and operating system), not all types of application behavior can be accurately modeled in a simulation, making it difficult to accurately test changed features. Also, if the application is being developed for use on a very wide variety of mobile devices, a simulation may not be available for each type of device.
For at least the above reasons, it is desirable to develop applications in an environment that allows rapid implementation of proposed design changes. It is also desirable to quickly view proposed design changes in an operable application that incorporates the proposed changes. It is also desirable to quickly view proposed design changes implemented on multiple types of devices, which may run different operating systems or different versions of an operating system. Current environments for application development do not enable real time design and implementation across multiple types of devices.